package com.heima.leetcode.practice;

/**
 * @author 勾新杰
 * @version 1.0
 * @description: leetcode 240. 搜索二维矩阵 II
 * @date 2025/2/10 13:39
 */
public class E240 {

    /**
     * <h3>方法一：二分查找的思想</h3>
     *
     * @param matrix 二维数组
     * @param target 目标值
     * @return 是否存在
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        int rows = matrix.length, cols = matrix[0].length;
        int i = 0, j = cols - 1;
        // 从右上角开始搜索
        while (i < rows && j >= 0) {
            // 如果当前元素等于目标值，返回true
            if (matrix[i][j] == target) return true;
                // 如果当前元素大于目标值，则向左移动一列
            else if (matrix[i][j] > target) j--;
                // 如果当前元素小于目标值，则向下移动一行
            else i++;
        }
        return false;
    }
}
